//
//  NELoginDataDefine.h
//  LoginSDK
//
//  Created by hubo on 14-11-4.
//  Copyright (c) 2014年 Netease. All rights reserved.
//

#import <Foundation/Foundation.h>

/* 登陆错误码定义 */
enum {
    NELoginErrorNone                     = 0,        // 请求成功
    NELoginErrorNoNetwork                = 600,      // 没有网络
    NELoginErrorUnexpectedData           = 601,      // 未知异常，如有测试服务器下，测试环境下没有设置代理或者请求参数错误或者客户端验证签名错误
    NELoginErrorShareTicketErr           = 602,      // 共享登陆，webview返回ticket为空
    NELoginErrorShareNotAppLogined       = 603,      // 共享登陆，当前设备没有共享登陆的产品
    NELoginErrorParameterErr             = 604,      // 请求参数错误，如传入的参数为空

    NELoginErrorNoServer                 = 500,      // 服务器错误
    NELoginErrorServerIng                = 503,      // 服务器正在维护
    
    NELoginErrorTicketInvalid            = 400,      // 共享登陆，ticket无效
    NELoginErrorUrlErr                   = 401,      // 请求参数错误，确认product id是否审核通过、或者参数值非法
    NELoginErrorDeviceInvalid            = 402,      // 设备非法，产品需要引导用户走正常登陆
    NELoginErrorAppInvalid               = 403,      // 产品非法
    NELoginErrorVerCodeNeedUp            = 411,      // 用户需要上行短信，才能获取验证码
    NELoginErrorVerCodeErrMax            = 412,      // 短信验证错误次数超过限制
    NELoginErrorVerCodeErr               = 413,      // 验证码错误
    NELoginErrorNoUser                   = 420,      // 没有该用户
    NELoginErrorAccountLocked            = 422,      // 账号被锁定
    NELoginErrorIdInvalid                = 427,      // 初始化id无效
    NELoginErrorSignErr                  = 444,      // 签名错误，确认传入的urs公钥是否正确、私钥是否正确、Security.framework是否导入
    NELoginErrorLogout                   = 450,      // 本地 token 为nil，已登出
    
    NELoginErrorPasswordErr              = 460,      // 密码错误
    NELoginErrorSDKNoCompatibility       = 499,      // 接口版本不兼容，SDK需要升级
};
typedef NSUInteger NELoginErrorCode;

/* 登陆类型定义 */
typedef enum
{
    LoginTypeUnLogin               = 0,           // 未登陆
    LoginTypeURS                   = 10,          // urs登录
    LoginTypeShare                 = 20,          // 共享登陆
    LoginTypeMobile                = 30,          // 手机号登录
}LoginType;

/* 回调block定义*/
typedef void(^NELoginTicketCompletionBlock)(NSArray* aTicketList);         // 已经登陆app信息列表，NELoginedAPPInfo类型数组
typedef void(^NELoginFailureBlock)(NSError* aError);                       // 对应error code详见NELoginErrorCode定义
typedef void(^NELoginVerifyTokenBlock)(BOOL isValid);                      // YES:Token有效，NO:Token无效
typedef void(^NELoginCompletionBlock)(BOOL isSuccess, NSError* aError);     // isSuccess:YES登陆成功，NO:登陆失败，aError对应登陆失败的错误码，对应error code详见NELoginErrorCode定义

/* 单个已经登陆app详情*/
@interface NELoginedAPPInfo : NSObject<NSCoding>
@property(nonatomic, strong) NSString *ticket;          // 登陆app ticket
@property(nonatomic, strong) NSString *product;         // 产品id
@property(nonatomic, strong) NSString *productName;     // 产品名
@property(nonatomic, strong) NSString *username;        // 已登陆用户名
@property(nonatomic, strong) NSString *userIcon;        // 用户图像
@property(nonatomic, strong) NSString *scheme;          // 产品scheme
@property(nonatomic, strong) NSString *logo;            // 产品logo


- (id)initWithDictionary:(NSDictionary *)aDictionary;
@end